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