€•sDŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ$/translations/zh_CN/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/zh_TW/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/it_IT/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ja_JP/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ko_KR/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/sp_SP/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒThe I2C Protocol”h]”hŒThe I2C Protocol”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒ>/var/lib/git/docbuild/linux/Documentation/i2c/i2c-protocol.rst”h KubhŒ paragraph”“”)”}”(hŒ_This document is an overview of the basic I2C transactions and the kernel APIs to perform them.”h]”hŒ_This document is an overview of the basic I2C transactions and the kernel APIs to perform them.”…””}”(hh¹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¢)”}”(hhh]”(h§)”}”(hŒKey to symbols”h]”hŒKey to symbols”…””}”(hhÊhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hhÇhžhhŸh¶h K ubhŒtable”“”)”}”(hhh]”hŒtgroup”“”)”}”(hhh]”(hŒcolspec”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1hâhhßubhã)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K=uh1hâhhßubhŒtbody”“”)”}”(hhh]”(hŒrow”“”)”}”(hhh]”(hŒentry”“”)”}”(hhh]”h¸)”}”(hŒS”h]”hŒS”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿubj)”}”(hhh]”h¸)”}”(hŒStart condition”h]”hŒStart condition”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúubhþ)”}”(hhh]”(j)”}”(hhh]”h¸)”}”(hŒP”h]”hŒP”…””}”(hj>hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubj)”}”(hhh]”h¸)”}”(hŒStop condition”h]”hŒStop condition”…””}”(hjUhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúubhþ)”}”(hhh]”(j)”}”(hhh]”h¸)”}”(hŒ Rd/Wr (1 bit)”h]”hŒ Rd/Wr (1 bit)”…””}”(hjuhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubj)”}”(hhh]”h¸)”}”(hŒ)Read/Write bit. Rd equals 1, Wr equals 0.”h]”hŒ)Read/Write bit. Rd equals 1, Wr equals 0.”…””}”(hjŒhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúubhþ)”}”(hhh]”(j)”}”(hhh]”h¸)”}”(hŒ A, NA (1 bit)”h]”hŒ A, NA (1 bit)”…””}”(hj¬hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubj)”}”(hhh]”h¸)”}”(hŒ0Acknowledge (ACK) and Not Acknowledge (NACK) bit”h]”hŒ0Acknowledge (ACK) and Not Acknowledge (NACK) bit”…””}”(hjÃhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúubhþ)”}”(hhh]”(j)”}”(hhh]”h¸)”}”(hŒAddr (7 bits)”h]”hŒAddr (7 bits)”…””}”(hjãhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubj)”}”(hhh]”h¸)”}”(hŒNI2C 7 bit address. Note that this can be expanded to get a 10 bit I2C address.”h]”hŒNI2C 7 bit address. Note that this can be expanded to get a 10 bit I2C address.”…””}”(hjúhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúubhþ)”}”(hhh]”(j)”}”(hhh]”h¸)”}”(hŒData (8 bits)”h]”hŒData (8 bits)”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hhh]”h¸)”}”(hŒA plain data byte.”h]”hŒA plain data byte.”…””}”(hj1hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúubhþ)”}”(hhh]”(j)”}”(hhh]”h¸)”}”(hŒ[..]”h]”hŒ[..]”…””}”(hjQhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubj)”}”(hhh]”h¸)”}”(hŒEData sent by I2C device, as opposed to data sent by the host adapter.”h]”hŒEData sent by I2C device, as opposed to data sent by the host adapter.”…””}”(hjhhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúubeh}”(h]”h ]”h"]”h$]”h&]”uh1høhhßubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1hÝhhÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hØhhÇhžhhŸh¶h Nubeh}”(h]”Œkey-to-symbols”ah ]”h"]”Œkey to symbols”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K ubh¢)”}”(hhh]”(h§)”}”(hŒSimple send transaction”h]”hŒSimple send transaction”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h Kubh¸)”}”(hŒ"Implemented by i2c_master_send()::”h]”hŒ!Implemented by i2c_master_send():”…””}”(hj®hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhjhžhubhŒ literal_block”“”)”}”(hŒ2S Addr Wr [A] Data [A] Data [A] ... [A] Data [A] P”h]”hŒ2S Addr Wr [A] Data [A] Data [A] ... [A] Data [A] P”…””}”hj¾sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j¼hŸh¶h Khjhžhubeh}”(h]”Œsimple-send-transaction”ah ]”h"]”Œsimple send transaction”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒSimple receive transaction”h]”hŒSimple receive transaction”…””}”(hjÙhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjÖhžhhŸh¶h K"ubh¸)”}”(hŒ"Implemented by i2c_master_recv()::”h]”hŒ!Implemented by i2c_master_recv():”…””}”(hjçhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K$hjÖhžhubj½)”}”(hŒ1S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P”h]”hŒ1S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P”…””}”hjõsbah}”(h]”h ]”h"]”h$]”h&]”jÌjÍuh1j¼hŸh¶h K&hjÖhžhubeh}”(h]”Œsimple-receive-transaction”ah ]”h"]”Œsimple receive transaction”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K"ubh¢)”}”(hhh]”(h§)”}”(hŒCombined transactions”h]”hŒCombined transactions”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj hžhhŸh¶h K*ubh¸)”}”(hŒImplemented by i2c_transfer().”h]”hŒImplemented by i2c_transfer().”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K,hj hžhubh¸)”}”(hŒ½They are just like the above transactions, but instead of a stop condition P a start condition S is sent and the transaction continues. An example of a byte read, followed by a byte write::”h]”hŒ¼They are just like the above transactions, but instead of a stop condition P a start condition S is sent and the transaction continues. An example of a byte read, followed by a byte write:”…””}”(hj*hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K.hj hžhubj½)”}”(hŒ0S Addr Rd [A] [Data] NA S Addr Wr [A] Data [A] P”h]”hŒ0S Addr Rd [A] [Data] NA S Addr Wr [A] Data [A] P”…””}”hj8sbah}”(h]”h ]”h"]”h$]”h&]”jÌjÍuh1j¼hŸh¶h K2hj hžhubeh}”(h]”Œcombined-transactions”ah ]”h"]”Œcombined transactions”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K*ubh¢)”}”(hhh]”(h§)”}”(hŒModified transactions”h]”hŒModified transactions”…””}”(hjQhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjNhžhhŸh¶h K6ubh¸)”}”(hŒÎThe following modifications to the I2C protocol can also be generated by setting these flags for I2C messages. With the exception of I2C_M_NOSTART, they are usually only needed to work around device issues:”h]”hŒÎThe following modifications to the I2C protocol can also be generated by setting these flags for I2C messages. With the exception of I2C_M_NOSTART, they are usually only needed to work around device issues:”…””}”(hj_hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K8hjNhžhubhŒdefinition_list”“”)”}”(hhh]”(hŒdefinition_list_item”“”)”}”(hŒÛI2C_M_IGNORE_NAK: Normally message is interrupted immediately if there is [NA] from the client. Setting this flag treats any [NA] as [A], and all of message is sent. These messages may still fail to SCL lo->hi timeout. ”h]”(hŒterm”“”)”}”(hŒI2C_M_IGNORE_NAK:”h]”hŒI2C_M_IGNORE_NAK:”…””}”(hjzhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhŸh¶h K@hjtubhŒ definition”“”)”}”(hhh]”h¸)”}”(hŒÈNormally message is interrupted immediately if there is [NA] from the client. Setting this flag treats any [NA] as [A], and all of message is sent. These messages may still fail to SCL lo->hi timeout.”h]”hŒÈNormally message is interrupted immediately if there is [NA] from the client. Setting this flag treats any [NA] as [A], and all of message is sent. These messages may still fail to SCL lo->hi timeout.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K=hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jˆhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrhŸh¶h K@hjoubjs)”}”(hŒ@I2C_M_NO_RD_ACK: In a read message, master A/NA bit is skipped. ”h]”(jy)”}”(hŒI2C_M_NO_RD_ACK:”h]”hŒI2C_M_NO_RD_ACK:”…””}”(hj«hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhŸh¶h KChj§ubj‰)”}”(hhh]”h¸)”}”(hŒ.In a read message, master A/NA bit is skipped.”h]”hŒ.In a read message, master A/NA bit is skipped.”…””}”(hj¼hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KChj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jˆhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrhŸh¶h KChjohžhubjs)”}”(hXI2C_M_NOSTART: In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some point. For example, setting I2C_M_NOSTART on the second partial message generates something like:: S Addr Rd [A] [Data] NA Data [A] P If you set the I2C_M_NOSTART variable for the first partial message, we do not generate Addr, but we do generate the start condition S. This will probably confuse all other clients on your bus, so don't try this. This is often used to gather transmits from multiple data buffers in system memory into something that appears as a single transfer to the I2C device but may also be used between direction changes by some rare devices. ”h]”(jy)”}”(hŒI2C_M_NOSTART:”h]”hŒI2C_M_NOSTART:”…””}”(hjÚhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhŸh¶h KThjÖubj‰)”}”(hhh]”(h¸)”}”(hŒ¨In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some point. For example, setting I2C_M_NOSTART on the second partial message generates something like::”h]”hŒ«In a combined transaction, no ‘S Addr Wr/Rd [A]’ is generated at some point. For example, setting I2C_M_NOSTART on the second partial message generates something like:”…””}”(hjëhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KFhjèubj½)”}”(hŒ"S Addr Rd [A] [Data] NA Data [A] P”h]”hŒ"S Addr Rd [A] [Data] NA Data [A] P”…””}”hjùsbah}”(h]”h ]”h"]”h$]”h&]”jÌjÍuh1j¼hŸh¶h KJhjèubh¸)”}”(hŒÔIf you set the I2C_M_NOSTART variable for the first partial message, we do not generate Addr, but we do generate the start condition S. This will probably confuse all other clients on your bus, so don't try this.”h]”hŒÖIf you set the I2C_M_NOSTART variable for the first partial message, we do not generate Addr, but we do generate the start condition S. This will probably confuse all other clients on your bus, so don’t try this.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KLhjèubh¸)”}”(hŒÚThis is often used to gather transmits from multiple data buffers in system memory into something that appears as a single transfer to the I2C device but may also be used between direction changes by some rare devices.”h]”hŒÚThis is often used to gather transmits from multiple data buffers in system memory into something that appears as a single transfer to the I2C device but may also be used between direction changes by some rare devices.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KQhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jˆhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrhŸh¶h KThjohžhubjs)”}”(hŒãI2C_M_REV_DIR_ADDR: This toggles the Rd/Wr flag. That is, if you want to do a write, but need to emit an Rd instead of a Wr, or vice versa, you set this flag. For example:: S Addr Rd [A] Data [A] Data [A] ... [A] Data [A] P ”h]”(jy)”}”(hŒI2C_M_REV_DIR_ADDR:”h]”hŒI2C_M_REV_DIR_ADDR:”…””}”(hj3hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhŸh¶h K[hj/ubj‰)”}”(hhh]”(h¸)”}”(hŒ˜This toggles the Rd/Wr flag. That is, if you want to do a write, but need to emit an Rd instead of a Wr, or vice versa, you set this flag. For example::”h]”hŒ—This toggles the Rd/Wr flag. That is, if you want to do a write, but need to emit an Rd instead of a Wr, or vice versa, you set this flag. For example:”…””}”(hjDhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KWhjAubj½)”}”(hŒ2S Addr Rd [A] Data [A] Data [A] ... [A] Data [A] P”h]”hŒ2S Addr Rd [A] Data [A] Data [A] ... [A] Data [A] P”…””}”hjRsbah}”(h]”h ]”h"]”h$]”h&]”jÌjÍuh1j¼hŸh¶h K[hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jˆhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrhŸh¶h K[hjohžhubjs)”}”(hŒÅI2C_M_STOP: Force a stop condition (P) after the message. Some I2C related protocols like SCCB require that. Normally, you really don't want to get interrupted between the messages of one transfer.”h]”(jy)”}”(hŒ I2C_M_STOP:”h]”hŒ I2C_M_STOP:”…””}”(hjphžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhŸh¶h K_hjlubj‰)”}”(hhh]”h¸)”}”(hŒ¹Force a stop condition (P) after the message. Some I2C related protocols like SCCB require that. Normally, you really don't want to get interrupted between the messages of one transfer.”h]”hŒ»Force a stop condition (P) after the message. Some I2C related protocols like SCCB require that. Normally, you really don’t want to get interrupted between the messages of one transfer.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K^hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jˆhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrhŸh¶h K_hjohžhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjNhžhhŸh¶h Nubeh}”(h]”Œmodified-transactions”ah ]”h"]”Œmodified transactions”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K6ubeh}”(h]”Œthe-i2c-protocol”ah ]”h"]”Œthe i2c protocol”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h¶uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¦NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jŒfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÓŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h¶Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j®j«jšj—jÓjÐjjjKjHj¦j£uŒ nametypes”}”(j®‰jš‰jÓ‰j‰jK‰j¦‰uh}”(j«h£j—hÇjÐjjjÖjHj j£jNuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.