 | us-gaap:PaymentGuaranteeMember | parent-child | http://fasb.org/us-gaap/role/disclosure/Guarantees |
 | us-gaap:PerformanceGuaranteeMember | parent-child | http://fasb.org/us-gaap/role/disclosure/Guarantees |
 | us-gaap:IndemnificationGuaranteeMember | parent-child | http://fasb.org/us-gaap/role/disclosure/Guarantees |
 | us-gaap:IndirectGuaranteeOfIndebtednessMember | parent-child | http://fasb.org/us-gaap/role/disclosure/Guarantees |
 | us-gaap:FinancialGuaranteeMember | parent-child | http://fasb.org/us-gaap/role/disclosure/Guarantees |
 | us-gaap:GuaranteeTypeOtherMember | parent-child | http://fasb.org/us-gaap/role/disclosure/Guarantees |
 | us-gaap:SuretyBondMember | parent-child | http://fasb.org/us-gaap/role/disclosure/Guarantees |
 | us-gaap:PaymentGuaranteeMember | domain-member | http://fasb.org/us-gaap/role/disclosure/GuaranteesScheduleOfGuaranteeObligationsTable |
 | us-gaap:PerformanceGuaranteeMember | domain-member | http://fasb.org/us-gaap/role/disclosure/GuaranteesScheduleOfGuaranteeObligationsTable |
 | us-gaap:IndemnificationGuaranteeMember | domain-member | http://fasb.org/us-gaap/role/disclosure/GuaranteesScheduleOfGuaranteeObligationsTable |
 | us-gaap:IndirectGuaranteeOfIndebtednessMember | domain-member | http://fasb.org/us-gaap/role/disclosure/GuaranteesScheduleOfGuaranteeObligationsTable |
 | us-gaap:FinancialGuaranteeMember | domain-member | http://fasb.org/us-gaap/role/disclosure/GuaranteesScheduleOfGuaranteeObligationsTable |
 | us-gaap:GuaranteeTypeOtherMember | domain-member | http://fasb.org/us-gaap/role/disclosure/GuaranteesScheduleOfGuaranteeObligationsTable |
 | us-gaap:SuretyBondMember | domain-member | http://fasb.org/us-gaap/role/disclosure/GuaranteesScheduleOfGuaranteeObligationsTable |